package com.example.freemarker;

import com.example.utils.ObjectMaps;
import com.example.utils.PathUtils;
import com.example.utils.PropertiesUtils;
import freemarker.template.Configuration;

import java.io.File;
import java.io.IOException;

/**
 * @Classname FreemarkerConfig
 * @Description TODO
 * @Date 2022/5/28 23:25
 * @Created by XiongXiong
 * @Author: X.I.O
 */
public class FreemarkerConfig {

    public  Configuration getFreemarkerConfig() throws Exception{
        Configuration configuration= (Configuration)ObjectMaps.getObjectByClass(Configuration.class);
        if(configuration==null){
            configuration=buildConfig();
            ObjectMaps.setAutuWirdemap(Configuration.class.getName(),configuration);
        }
        return configuration;
    }

    private Configuration buildConfig() throws IOException {
        // 第一步：创建一个Configuration对象，直接new一个对象。构造方法的参数就是freemarker对于的版本号。
        Configuration configuration = new Configuration(Configuration.getVersion());

        //String path= this.getClass().getResource("/").getPath();
        String path= PathUtils.getPath();
        String staticpath= PropertiesUtils.getProperty("static");
        File file=null;
        if(staticpath!=null){
            String freemarkerPath= PropertiesUtils.getProperty("freemarkerpath");
            if(freemarkerPath != null){
                file=new File(path+File.separator+staticpath+File.separator+freemarkerPath);
                System.out.println(file.getPath()+"模板路径");
            }else {
                file=new File(path+File.separator+staticpath);
            }
        }else {
            file=new File(path+File.separator + "freemarker");
        }
        // 第二步：设置模板文件所在的路径。
        configuration.setDirectoryForTemplateLoading(file);

        // 第三步：设置模板文件使用的字符集。一般就是utf-8.
        configuration.setDefaultEncoding("utf-8");
        return configuration;
    }



}
